/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BL;

import BE.*;
import DA.DAContacto;
import DA.DATipoDocumento;
import com.toedter.calendar.JDateChooser;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author alejandro
 */
public class BLContacto {
   
    public void buscaContacto (int codigo,int idTipoDocumento, String nombEmpresa, String nombre,String apePat,int idTipoContacto,
                            String estado,JTable tblContacto, int tipoBusqueda)
    {
        DAContacto dAContacto = new DAContacto();
        ResultSet rs = null;
        BEContacto contacto = new BEContacto();
                
        contacto.setIdPersona(codigo);
        contacto.setTipoDocumento(idTipoDocumento);
        contacto.setNombEmpresa(nombEmpresa);
        contacto.setNombre(nombre);
        contacto.setApePaterno(apePat);
        contacto.setIdTipoContacto(idTipoContacto);
        contacto.setEstado(estado);
        
        rs = dAContacto.buscarContacto(contacto,tipoBusqueda); //1 para buscar por parametros de busqueda
        this.llenaTabla(rs, tblContacto);
        
    }
    
    public int eliminarContacto (int IDProd, JTable tblContacto)
    {
        DAContacto daContacto = new DAContacto();

        return daContacto.eliminarContacto(IDProd);
        
    }
    
  
    
    public void llenaTabla (ResultSet rs, JTable tblContacto)
    {
        DAContacto daContacto = new DAContacto();

        BLModelo modelo = new BLModelo();
        tblContacto.setModel(modelo);

        modelo.addColumn("Código");
        modelo.addColumn("Empresa");
        modelo.addColumn("Tipo Contacto");
        modelo.addColumn("Tipo Documento");
        modelo.addColumn("Nro. Documento");
        modelo.addColumn("Estado");
        modelo.addColumn("Nombre");
        modelo.addColumn("Apellido Paterno");
     
        //Ocultar columna Código
        //tblContacto.getColumnModel().getColumn(0).setMaxWidth(0);
        //tblContacto.getColumnModel().getColumn(0).setMinWidth(0);
        //tblContacto.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0);
        //tblContacto.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0);

        try
        {
            while (rs.next())
            {
                Object [] fila = new Object[8];
                fila[0] = rs.getObject("IDCONTACTO");
                fila[1] = rs.getObject("NOMBEMPRESA");
                fila[2] = rs.getObject("NOMBTIPOCONTACTO");
                fila[3] = rs.getObject("DESCRIPCION");
                fila[4] = rs.getObject("NROTIPODOCUMENTO");
                fila[5] = rs.getObject("ESTADO");
                fila[6] = rs.getObject("NOMBRE");
                fila[7] = rs.getObject("APEPATERNO");
               
                modelo.addRow(fila);
                
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Error al llenar la tabla","Error",JOptionPane.ERROR_MESSAGE);
        }
    }
     
     
      public int agregaContacto(String nombEmpresa,String nombre,String apePaterno,
                    String apeMaterno,String direccion,int comboid,
                    Date fecNac,int idTipoDoc,int nroDoc,int telef,String email,JDateChooser selectorFecha){
     
        BEContacto contacto = new BEContacto();
        DAContacto daContacto = new DAContacto();
        BLValidaciones validar = new BLValidaciones();
        
        Boolean error = false;
        String mensaje = "Error en el/los siguiente(s) campo(s): \n";

         if (nombEmpresa.equals("")){
             mensaje += "- Debe ingresar el Nombre de la empresa. \n";
             error = true;
         }
         if (nombre.equals("")){
             mensaje += "- Debe ingresar el Nombre del contacto. \n";
             error = true;
         }  
         if (apePaterno.equals("")){
             mensaje += "- Debe ingresar el Apellido Paterno del contacto. \n";
             error = true;
         }
         if (apeMaterno.equals("")){
             mensaje += "- Debe ingresar el Apellido Materno del contacto. \n";
             error = true;
         }    
         if (direccion.equals("")){
             mensaje += "- Debe ingresar la Dirección. \n";
             error = true;
         }    
         if (comboid == 0){
             mensaje += "- Debe ingresar el Tipo de Contacto. \n";
             error = true;
         }    
         if ((validar.validarFecha(selectorFecha))==false){
              mensaje += "- La fecha de nacimiento. \n";
              error = true;
         }
         if (idTipoDoc == 0){
             mensaje += "- Debe ingresar el Tipo de Documento. \n";
             error = true;
         }    
         if (nroDoc == 0){
             mensaje += "- Debe ingresar el Número de Documento. \n";
             error = true;
         }
         if (telef == 0){
             mensaje += "- Debe ingresar el Teléfono. \n";
             error = true;
         }
         if ((validar.isEmail(email))==false){
               mensaje += "- Email incorrecto. \n";
               error = true;
         }
        if (error==false){
            if (JOptionPane.showConfirmDialog(null,"Desea agregar el contacto?",
                "Confirmación",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE) == 0)
            {
                contacto.setNombEmpresa(nombEmpresa);
                contacto.setNombre(nombre);
                contacto.setApePaterno(apePaterno);
                contacto.setApeMaterno(apeMaterno);
                contacto.setDireccion(direccion);
                contacto.setIdTipoContacto(comboid);
                contacto.setFechaNacimiento(fecNac);
                contacto.setNroDocumento(nroDoc);
                contacto.setTipoDocumento(idTipoDoc);
                contacto.setTelefono(telef);
                contacto.setEmail(email);

        
                return daContacto.agregarContacto(contacto);
            }
                           
        } 
        else {
            JOptionPane.showMessageDialog(null,mensaje,
                                              "Error",JOptionPane.ERROR_MESSAGE);
        
        }
      return 1;
      }
      
      public void agregarContactoCargaMavisa(BEContacto contacto)
      {
          DAContacto dAContacto = new DAContacto();
          dAContacto.agregarContactoCargaMasiva(contacto);
      }
      
       public void setTipoContacto(JComboBox cmbTiposContacto)
    {
        DAContacto daContacto = new DAContacto();
        List<BETipoContacto> tipos = new ArrayList<BETipoContacto>();

        tipos = daContacto.obtenerTipoContacto();

        cmbTiposContacto.addItem(new BLCombo(0," "));
        if (tipos != null)
            for (int i=0;i<tipos.size();i++)
                cmbTiposContacto.addItem(new BLCombo(tipos.get(i).getIdTipoContacto(),
                                     tipos.get(i).getNombTipoContacto()));

    }
    
       public void setTipoDocumento(JComboBox cmbTipoDocumento)
    {
        DATipoDocumento daTipoDocumento = new DATipoDocumento();
        List<BETipoDocumento> tipos = new ArrayList<BETipoDocumento>();

        tipos = daTipoDocumento.obtenerTipoDocumento();

        cmbTipoDocumento.addItem(new BLCombo(0,""));
        if (tipos != null)
            for (int i=0;i<tipos.size();i++)
                cmbTipoDocumento.addItem(new BLCombo(tipos.get(i).getIdTipoDocumento(),
                                     tipos.get(i).getNombTipoDocumento()));

    }
       
    public void setTipoContactoMant(JComboBox cmbTiposContacto)
    {
        DAContacto daContacto = new DAContacto();
        List<BETipoContacto> tipos = new ArrayList<BETipoContacto>();

        tipos = daContacto.obtenerTipoContacto();

        cmbTiposContacto.addItem(new BLCombo(0,"TODOS"));
        if (tipos != null)
            for (int i=0;i<tipos.size();i++)
                cmbTiposContacto.addItem(new BLCombo(tipos.get(i).getIdTipoContacto(),
                                     tipos.get(i).getNombTipoContacto()));

    }
    
     public void limpiaTabla (JTable tblContacto)
    {
        BLModelo modelo = new BLModelo();
        tblContacto.setModel(modelo);

        modelo.addColumn("Código");
        modelo.addColumn("Empresa");
        modelo.addColumn("Tipo Contacto");
        modelo.addColumn("Tipo Documento");
        modelo.addColumn("Nro. Documento");
        modelo.addColumn("Estado");
        modelo.addColumn("Nombre");
        modelo.addColumn("Apellido Paterno");
    }
     
    public BEContacto llenaVentana (int id)
    {
        DAContacto daContacto = new DAContacto();
        BEContacto contacto = daContacto.getContactobyId(id);

        return contacto;
    }
    
     public int modificaContacto (BEContacto contacto,JDateChooser selectorFecha)
    {
        //BEContacto becontacto = new BEContacto();
        DAContacto daContacto = new DAContacto();
        BLValidaciones validar = new BLValidaciones();
       
        Boolean error = false;
        String mensaje = "Error en el/los siguiente(s) campo(s): \n";
        
        if (contacto.getNombEmpresa().equals("")){
             mensaje += "- Debe ingresar el Nombre de la empresa. \n";
             error = true;
         }
         if (contacto.getNombre().equals("")){
             mensaje += "- Debe ingresar el Nombre del contacto. \n";
             error = true;
         }  
         if (contacto.getApePaterno().equals("")){
             mensaje += "- Debe ingresar el Apellido Paterno del contacto. \n";
             error = true;
         }
         if (contacto.getApeMaterno().equals("")){
             mensaje += "- Debe ingresar el Apellido Materno del contacto. \n";
             error = true;
         }    
         if (contacto.getDireccion().equals("")){
             mensaje += "- Debe ingresar la Dirección. \n";
             error = true;
         }    
         if ( contacto.getIdTipoContacto()== 0){
             mensaje += "- Debe ingresar el Tipo de Contacto. \n";
             error = true;
         }    
         if ((validar.validarFecha(selectorFecha))==false){
              mensaje += "- La fecha de nacimiento. \n";
              error = true;
         }
         if (contacto.getTipoDocumento() == 0){
             mensaje += "- Debe ingresar el Tipo de Documento. \n";
             error = true;
         }    
         if (contacto.getNroDocumento() == 0){
             mensaje += "- Debe ingresar el Número de Documento. \n";
             error = true;
         }
         if (contacto.getTelefono() == 0){
             mensaje += "- Debe ingresar el Teléfono. \n";
             error = true;
         }
         if ((validar.isEmail(contacto.getEmail()))==false){
               mensaje += "- Email incorrecto. \n";
               error = true;
         }
        if (error==false){
            if (JOptionPane.showConfirmDialog(null,"Desea modificar el contacto?",
                "Confirmación",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE) == 0)
            {
                /*contacto.setNombEmpresa(contacto.getNombEmpresa());
                contacto.setNombre(contacto.getNombre());
                contacto.setApePaterno(contacto.getApePaterno());
                contacto.setApeMaterno(contacto.getApeMaterno());
                contacto.setDireccion(contacto.getDireccion());
                contacto.setIdTipoContacto(contacto.getIdTipoContacto());
                contacto.setFechaNacimiento(contacto.getFechaNacimiento());
                contacto.setNroDocumento(contacto.getNroDocumento());
                contacto.setTipoDocumento(contacto.getTipoDocumento());
                contacto.setTelefono(contacto.getTelefono());
                contacto.setEmail(contacto.getEmail());
                 */  
        
                return daContacto.modificaContacto(contacto);
                
            }
                           
        } 
        else {
            JOptionPane.showMessageDialog(null,mensaje,
                                              "Error",JOptionPane.ERROR_MESSAGE);
        
        }
      return 1;
        
        
        
        
        
        
        
    }
}
